Data storage systems are arrangements of hardware and software that include one or more storage processors coupled to arrays of non-volatile storage devices, such as magnetic disk drives, electronic flash drives, and/or optical drives, for example. The storage processors service storage requests, arriving from host machines (“hosts”), which specify files or other data elements to be written, read, created, or deleted, for example. Software running on the storage processors manages incoming storage requests and performs various data processing tasks to organize and secure the data elements stored on the non-volatile storage devices.
Some data storage systems employ a liability/insurance model to track available storage space. For example, when a file system built upon a pool of storage resources initiates an action that would change the amount of storage space required from the pool, the file system calculates a “liability.” The liability identifies an estimate of the amount of storage space required from the pool to complete the action. If the storage pool has enough available storage space to cover the liability, then the pool may issue “insurance” against the liability, e.g., by increasing the amount of reserved space in the pool by the specified amount of liability. The file system may then proceed to perform the initiated action, as the storage space required to complete the action has been fully insured.